/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pobladores;

import baseDeDatos.BaseDeDatos;
import dispositivos.Fichero;
import java.util.ArrayList;
import patrones.BuscadorAnno;
import patrones.BuscadorAnnoConEtiquetas;
import patrones.BuscadorEquipoTotal;
import patrones.BuscadorNombre;
import patrones.BuscadorNombreConEtiquetas;
import patrones.BuscadorNumero;
import patrones.BuscadorPosicionConEtiquetas;
import utilidades.CamposPaginaWeb;

/**
 *
 * @author Adrian y Sergio
 */
public class PobladorBD {
    
    int contadorEquipos = 1;
    
    BaseDeDatos bd = new BaseDeDatos();
    
    /**
     * Con esta funcion nos conectamos con la base de datos SQL
     * despues para que no haya errores borramos cualquier tabla
     * creada previamente con el nombre equipos y a continuacion
     * creamos la nueva tabla de nuestra base de datos
     */
    public void crearBD()
    {
       bd.conectarConBD("jdbc:mysql://localhost/proyecto", "root", "123456789");
       bd.ejecutarConsulta("USE proyecto");
       bd.ejecutarInsercion("DROP TABLE equipos");
       bd.ejecutarInsercion("CREATE TABLE equipos(idEquipo INT(11) NOT NULL primary key, anno INT(11), posicion INT(11), nombre VARCHAR(100), jugados INT(11) , puntos INT(11) , ganados INT(11) , empatados INT(11) , perdidos INT(11))");

    }
    
    /**
     * Esta es la funcion que recorre todas las paginas q nos hemos descargado
     * y en cada pagina llama a la funcion poblarUnaLiga para que a su vez esta
     * llame a poblarUnEquipoEnUnaLiga y guarde todos los datos que nos
     * interesaban en la base de datos
     */
    public void poblarBD()
    {
        int anno = 1976;
        while(anno <= 2008){
                String nombreFichero = "pagina" + anno + ".html";
                poblarUnaLiga(nombreFichero);
                anno++;
        }
    }
    
    
    /**
     * poblarUnaLiga como su nombre indica rellena una liga.
     * Para ello se ayuda de la funcion poblarUnEquipoEnUnaLiga,
     * Llena una liga con la cantidad de equipos que le indiquemos
     * @param nombreFichero
     */
    public void poblarUnaLiga(String nombreFichero)
    {
        ArrayList<String> infoEquipos = new BuscadorEquipoTotal().buscar(new Fichero(nombreFichero).leer(),1);
        
        for(String infoEquipoTotal : infoEquipos)
        {
            poblarUnEquipoEnUnaLiga(infoEquipoTotal, contadorEquipos++);
        }
    }
    
    /**
     * En poblarUnEquipoEnUnaLiga lo que hacemos es introducir cada dato de cada equipo
     * (de las paginas webs) mediante la instruccion INSERT en la base de datos.
     * Cada dato que introducimos lo haremos gracias a los patrones previamente
     * definidos(contenidos en el paquete "patrones"), uno para el nombre, otro 
     * para la posicion, etc. 
     * La linea mas importante de la funcion se encuentra al final,
     * es la linea en la que se introducen todos los datos que
     * interesan en la base de datos
     * @param infoEquipoTotal
     * @param idEquipo
     */
    public void poblarUnEquipoEnUnaLiga(String infoEquipoTotal, int idEquipo)
    {
        String nombreEquipoConEtiquetas = new BuscadorNombreConEtiquetas().buscar(infoEquipoTotal,1);
        String nombreEquipo = new BuscadorNombre().buscar(nombreEquipoConEtiquetas,1);
        System.out.println(nombreEquipo);

        String annoConEtiquetas = new BuscadorAnnoConEtiquetas().buscar(infoEquipoTotal,1);
        String anno = new BuscadorAnno().buscar(annoConEtiquetas,1);
        System.out.println(anno);
        
        String posicionConEtiquetas = new BuscadorPosicionConEtiquetas().buscar(infoEquipoTotal,CamposPaginaWeb.POSICION.ordinal()+1);
        String posicion = new BuscadorNumero().buscar(posicionConEtiquetas,1);
        System.out.println(posicion);
        
        String jugadosConEtiquetas = new BuscadorPosicionConEtiquetas().buscar(infoEquipoTotal,CamposPaginaWeb.JUGADOS.ordinal()+1);
        String jugados = new BuscadorNumero().buscar(jugadosConEtiquetas,1);
        System.out.println(jugados);

        String puntosConEtiquetas = new BuscadorPosicionConEtiquetas().buscar(infoEquipoTotal,CamposPaginaWeb.PUNTOS.ordinal()+1);
        String puntos = new BuscadorNumero().buscar(puntosConEtiquetas,1);
        System.out.println(puntos);
        
        String ganadosConEtiquetas = new BuscadorPosicionConEtiquetas().buscar(infoEquipoTotal,CamposPaginaWeb.GANADOS.ordinal()+1);
        String ganados = new BuscadorNumero().buscar(ganadosConEtiquetas,1);
        System.out.println(ganados);
        
        String empatadosConEtiquetas = new BuscadorPosicionConEtiquetas().buscar(infoEquipoTotal,CamposPaginaWeb.EMPATADOS.ordinal()+1);
        String empatados = new BuscadorNumero().buscar(empatadosConEtiquetas,1);
        System.out.println(empatados);
        
        String perdidosConEtiquetas = new BuscadorPosicionConEtiquetas().buscar(infoEquipoTotal,CamposPaginaWeb.PERDIDOS.ordinal()+1);
        String perdidos = new BuscadorNumero().buscar(perdidosConEtiquetas,1);
        System.out.println(perdidos);
        
        String consulta = "INSERT INTO equipos (idEquipo, anno, posicion, nombre, jugados, puntos, ganados, empatados, perdidos)VALUES("+
                idEquipo +","+ anno +"," + posicion + ","+ "'"+ nombreEquipo+"'"+"," +jugados+","+ puntos+","+ ganados+","+
                empatados+","+ perdidos+")";
        
        System.out.println(consulta);
        
        bd.ejecutarInsercion(consulta);
    }
    
}
